#ifndef DEFINITION_H
#define DEFINITION_H

enum WCUTS {
  WPNOCUTS,         //
  WPGRL,           
  WPPVT,
  WPCLEAN,     
  WPTRIG,       //5
  WPPT,
  WPD0Z0,
  WPEXACTONELEPTON,  
  WPISO, 
  WPMET,     //
  WPMASSWINDOW,  //10
  WPJETVETO
};

enum CUTS {
  NOCUT,   
  GRL,        
  PVT,     
  CLEAN,    
  TRIG,     //5
  PRESLECTION,      
  USERCUT,  
  PTCHECK,  
  ISOLATION,     
  IPCUT,       // 5 
  OPPOSIT,
  MASSWINDOW,       
  MET,        
  JET_VETO        //14
};  //total 13 cuts


// Display Flags

//Bool_t Check_LeptonVariables   = false;

// Object definition cuts

const Double_t MUO_Z0CutSign       = 10.;
const Double_t MUO_Z0CutVeto       = 10.;
const Double_t MUO_D0CutSign       = 0.1;
const Double_t MUO_D0CutVeto       = 0.1;
const Double_t MUO_D0StandaloneCutVeto  = 1.;
const Double_t MUO_PtCutSign       = 25 * 1000;
const Double_t MUO_PtCutVeto       = 10 * 1000;
const Double_t MUO_EtaCutSign      = 2.5;     // absolute value less than 2.5
const Double_t MUO_EtaCutVeto      = 2.5;     // absolute value less than 2.7  
//const Double_t MUO_EtaIDQCutVeto   = 2.47;    // absolute value less than 2.47
const Double_t MUO_EtaIDQCutVeto   = 2.5;     // moved back to 2.5
const Double_t MUO_SumpT_pTCutSign = 0.1;
const Double_t MUO_SumpT_pTCutVeto = 0.1;
const Double_t MUO_SumET_ETCutSign = 0.14;     
const Double_t MUO_SumET_ETCutVeto = 0.14;
const Double_t MUO_OVLJetConeSign  = 0.4;     // dr cut for removing VetoJET OVL
const Double_t MUO_OVLJetConeVeto  = 0.4;     // dr cut for removing VetoJET OVL

const Double_t ELE_EtCutSign       = 25 * 1000;
const Double_t ELE_EtCutVeto       = 10 * 1000;
const Double_t ELE_EtaCutSign      = 2.47;    // absolute value less than 2.47
const Double_t ELE_EtaCutVeto      = 2.47;     // absolute value less than 2.47
const Double_t ELE_EtaCutVetoAuth8 = 4.5;     // absolute value less than 2.47
const Double_t ELE_D0CutSign       = 0.1;     // absolute value less than 0.1 mm
const Double_t ELE_D0CutVeto       = 0.1;     // absolute value less than 0.1 mm
const unsigned int  ELE_OQCutSign  = 0;
const unsigned int  ELE_OQCutVeto  = 0;
const Double_t ELE_SumPt_EtCutSign = 0.1; 
const Double_t ELE_SumPt_EtCutVeto = 0.1;
const Double_t ELE_SumEt_EtCutSign = 0.14;
const Double_t ELE_SumEt_EtCutVeto = 0.14;
const Double_t ELE_EtEleOvlSign   = 20*1000;   // Ele <= Et cut input OVL removal
const Double_t ELE_EtEleOvlVeto   = 20*1000;   // Ele <= Et cut input OVL removal
const Double_t ELE_OVLJetConeSign = 0.4;      // dr cut for removing VetoJET OVL
const Double_t ELE_OVLJetConeVeto = 0.4;      // dr cut for removing VetoJET OVL
const Double_t ELE_OVLMuonConeSign = 0.2;
const Double_t ELE_OVLMuonConeVeto = 0.2;


const Double_t JET_PtCutSign      = 20 * 1000;
const Double_t JET_PtCutVeto      = 20 * 1000;
const Double_t JET_EtaCutSign     = 2.5;      // absolute value less than 2.5
const Double_t JET_EtaCutVeto     = 4.5;      // absolute value less than 4.5  
const Double_t JET_JVFCutSign     = 0.5;
const Double_t JET_JVFCutVeto     = 0.5;     // ? to be checked
const Double_t JET_EtEleOvlSign   = 20*1000;   // Ele > Et cut input OVL removal
const Double_t JET_EtEleOvlVeto   = 20*1000;   // Ele > Et cut input OVL removal
const Double_t JET_OVLEleConeSign = 0.4;      // dr cut for removing VetoElE OVL
const Double_t JET_OVLEleConeVeto = 0.4;      // dr cut for removing VetoElE OVL



// Cuts on PV 
const Int_t Cut_NumTrackPV        =   3;      // At least three tracks for a good Primary Vertex

// Cut on MT
const Double_t Cut_MT             = 40*1000;

// Cut on MET
const Double_t Cut_MET            = 25*1000;

// Cut on Njet |eta| < 4.5
const unsigned int Cut_JET        = 2;

/*
const Int_t Cut_Z0PV                =   150;     // Trigger

const Double_t Cut_PtTrigger            =   15*1000;     // Trigger
const Double_t Cut_OverlapDeltaRWithJets=      0.4; //For lepton with jet
const Double_t Cut_DeltaRWithSame       =     0.05; //For ee, mm, and jet jet

const Double_t Cut_WLepPt            =  20*1000;     // W' lepton pt cut
const Double_t Cut_WMET              =  30*1000;     // W' missing ET cut
const Double_t Cut_WVetoJetPt        =  200*1000;     // W' missing ET cut
const Double_t Cut_WLeptonFraction   =  0.5;     // W' missing ET cut
const Double_t Cut_WPrimeLowMass     =  0.0*1000;     // W' missing ET cut
const Double_t Cut_WPrimeHighMass    =  4000*1000;     // W' missing ET cut

const Double_t Cut_ZLepPt            =  15.0*1000;     // W' lepton pt cut
const Double_t Cut_ZD0Sig            =  50.0;
const Double_t Cut_ZZ0Sig            =  50.0;
const Double_t Cut_ZD0               =  50.0;
const Double_t Cut_ZZ0               =  1000.0;

const    Int_t Cut_ZLepNBLayer       =  0;
const    Int_t Cut_ZLepNPixel        =  0;
const    Int_t Cut_ZLepNSCT          =  0;
const    Int_t Cut_ZLepNTRT          =  0;
const Double_t Cut_ZMassLowMass      =  66*1000;     // W' missing ET cut
const Double_t Cut_ZMassHighMass     =  116*1000;     // W' missing ET cut

const Double_t Cut_PhotonPt          =  25.0*1000;     // pt
const Double_t Cut_PhotonEta         =  2.37;     // pt

const Double_t Cut_LepVetoPt         =  20.0*1000;     // pt

const Double_t Cut_LeptonPt          =  20.0*1000;     // pt
const Double_t Cut_LeptonEta         =     2.4;     // eta
const Double_t Cut_ElectronEta       =     2.47;     
const Double_t Cut_CrackEta_low      =    1.37;     // crack region
const Double_t Cut_CrackEta_up       =    1.52;     // crack region

const Double_t Cut_IsoPt_ele         =     0.2;     // Track and Calo Isolation electrons
const Double_t Cut_IsoEt_ele         =     0.2;
const Double_t Cut_IsoPt_muo         =     0.1;     // Track and Calo Isolation muons
const Double_t Cut_IsoEt_muo         =     0.1;
const Double_t Cut_IsoPt_energy      =   10*1000;
const Double_t Cut_IsoEt_energy      =   10*1000;
const Double_t Cut_Chisq_muo         =      100;
const Double_t Cut_IP_Elec           =      6.0;     // Impact Parameter Significance
const Double_t Cut_IP_Muon           =      3.0;     // Impact Parameter Significance

const Double_t Cut_Dilepton_DrellY   =   12*1000;     // 
const Double_t Cut_DileptonM         =   50*1000;     // Diferent flavor
const Double_t Cut_DileptonM_sf      =   10*1000;     // Same flavor leptons: | zmass - DilpepM | > Cut
const Double_t Cut_InvariantMass_CR  =   80*1000;     // Invariant Mass of Leptons for Main Control Region  

const Double_t Cut_LeptonsDeltaPhi   =      1.3;     // DeltaPhi 
const Double_t Cut_LeptonsDeltaEta   =      2.6;     // DeltaPhi 


const Double_t Cut_JetPt             =   25*1000;     // Tagged Jet
const Double_t Cut_JetIP3DSV1        =   4.5;  

const Double_t Cut_JetEta            =     4.5;     // Tagged Jet
const Double_t Cut_JetVetoPt         =   40*1000;     // Hard Jet Veto 
const Double_t Cut_JetVetoEta        =      4.8;   
const Double_t Cut_JetProb           =     0.07;    //btagger's cut value @beff=60%
const Double_t Cut_JetSV0            =     5.85;    
const Double_t Cut_BtaggedJetPt      =   15*1000;         


const Double_t Cut_TauRecjection     =   25*1000;     // Real Tau recjection

const Double_t Cut_TotlaPt           =   30*1000;     // Total Pt
const Double_t Cut_MissingPt         =   30*1000; 
const Double_t Cut_MissingPt_df      =   30*1000; 
const Double_t Cut_TransverseMass    =   30*1000; //for MTlln


Double_t Globle_met =0.; 
Double_t Globle_metx=0.; 
Double_t Globle_mety=0.; 
*/



#endif
